package cwd

import (
	"fmt"
	"service/app/router"
	"service/common"
	"service/config"
	"service/global"
	"service/middleware"
	"service/utils"
)

func Start() {
	// 创建错误事件嵌套
	var InitError error
	config.InitConfig()
	global.Logger = common.Logger()
	// 连接db,赋值全局变量
	db, err := common.DbInit()
	global.Db = db
	if err != nil {
		// 使用错误嵌套
		InitError = utils.AppendError(InitError, err)
	}
	// redis
	{
		rdClient, err := common.RdclientInit()
		if err != nil {
			InitError = utils.AppendError(InitError, err)
		}
		global.RdClient = rdClient
	}

	// 加载路由与中间键
	// CasbinInstance, err := casb.CasbinInit(db)
	// global.Cb = global.CasbinMethod{Enforcer: CasbinInstance.Enforcer, Adapter: CasbinInstance.Adapter}
	if err != nil {
		InitError = utils.AppendError(InitError, err)
	}

	if InitError != nil {
		// 判断日志系统是否已开启
		if global.Logger != nil {
			global.Logger.Error(InitError.Error())
		}
		panic(InitError.Error())
	}

	// router.InitRouter()
	router.InitRouter(middleware.AuthMiddlePerm())

}

func Clean() {
	fmt.Println("---------------------------Clean")
}
